Elasticsearch Ingest হলো একটি প্রক্রিয়া, যা ডেটা ইন্ডেক্স করার আগে ডেটা প্রসেস করতে এবং পরিবর্তন করতে ব্যবহৃত হয়। এটি ডেটাকে ইন্ডেক্স করার আগে প্রিপ্রসেসিং এবং এনরিচমেন্টে সহায়ক, যা Elasticsearch-এ ইন্ডেক্সিং এবং সার্চ অপারেশনকে আরও কার্যকর করে তোলে। Pipelines Ingest প্রক্রিয়ায় একটি গুরুত্বপূর্ণ ভূমিকা পালন করে, যা বিভিন্ন Ingest Processor ব্যবহার করে ডেটার উপর বিভিন্ন ধরনের প্রক্রিয়া প্রয়োগ করে।
Elasticsearch-এ Ingest Node হলো একটি বিশেষ ধরনের নোড, যা ডেটাকে ইন্ডেক্স করার আগে প্রসেস করে। এটি বিভিন্ন Ingest Pipelines ব্যবহার করে ডেটা প্রসেস করতে পারে এবং সেই ডেটা প্রিপ্রোসেসিংয়ের পরে Elasticsearch-এ ইন্ডেক্স করা হয়।
Pipelines হলো এক বা একাধিক Ingest Processor-এর সমন্বয়ে গঠিত একটি প্রক্রিয়া, যা ডেটাকে ইনডেক্স করার আগে বিভিন্ন ধাপে প্রসেস করে। প্রতিটি Pipeline একাধিক Processor ব্যবহার করতে পারে এবং একটি Processor ডেটার উপর একটি নির্দিষ্ট প্রক্রিয়া চালায়। Pipeline ব্যবহার করে ডেটা ক্লিনিং, ফরম্যাটিং, এনরিচমেন্ট, এবং ট্রান্সফর্মেশনের মতো কার্যক্রম করা যায়।
একটি Pipeline তৈরি করতে নিম্নলিখিত তথ্য প্রয়োজন:
PUT /_ingest/pipeline/my_pipeline
{
"description": "A simple pipeline to set timestamp",
"processors": [
{
"set": {
"field": "processed_at",
"value": "{{_ingest.timestamp}}"
}
}
]
}
set
প্রসেসর ব্যবহার করা হয়েছে, যা "processed_at"
ফিল্ডে ডেটা প্রসেসের সময়সীমা সেট করে।Elasticsearch-এ বিভিন্ন ধরনের Ingest Processor রয়েছে, যা ডেটার উপর বিভিন্ন প্রক্রিয়া চালায়। নিচে কিছু সাধারণ প্রসেসরের উদাহরণ দেওয়া হলো:
string
থেকে integer
।ধরা যাক, আমাদের একটি লগ ফাইল আছে, যেখানে IP ঠিকানা এবং লগের টাইমস্ট্যাম্প রয়েছে। আমরা একটি Pipeline তৈরি করতে চাই, যা লগের আইপি ঠিকানার ভিত্তিতে ভৌগোলিক তথ্য যোগ করবে এবং লগের টাইমস্ট্যাম্প সঠিক ফরম্যাটে রূপান্তর করবে।
PUT /_ingest/pipeline/geoip_pipeline
{
"description": "Add geoip info and parse timestamp",
"processors": [
{
"geoip": {
"field": "client_ip",
"target_field": "geoip"
}
},
{
"date": {
"field": "timestamp",
"formats": ["yyyy-MM-dd HH:mm:ss", "ISO8601"]
}
}
]
}
"client_ip"
ফিল্ড থেকে ভৌগোলিক তথ্য বের করা হয়েছে এবং "geoip"
নামে একটি ফিল্ডে সেই তথ্য সংরক্ষণ করা হয়েছে।"timestamp"
ফিল্ডের তারিখের ফরম্যাট সঠিকভাবে নির্ধারণ করা হয়েছে।Elasticsearch-এর _ingest/pipeline
এন্ডপয়েন্ট ব্যবহার করে একটি Pipeline তৈরি করা হয়। উদাহরণ:
PUT /_ingest/pipeline/example_pipeline
{
"description": "Example pipeline for log processing",
"processors": [
{
"set": {
"field": "processed_time",
"value": "{{_ingest.timestamp}}"
}
}
]
}
একটি Pipeline ব্যবহার করে ডেটা ইনডেক্স করার জন্য _doc
রিকোয়েস্টে pipeline
প্যারামিটার উল্লেখ করা হয়:
POST /logs/_doc?pipeline=example_pipeline
{
"client_ip": "192.168.1.1",
"timestamp": "2023-10-20 15:30:45",
"message": "User logged in."
}
"example_pipeline"
ব্যবহার করে ডেটা প্রসেস করা হয়েছে এবং ইনডেক্স করা হয়েছে।Elasticsearch-এ Ingest এবং Pipelines ডেটা ইন্ডেক্স করার আগে ডেটা প্রসেস করতে একটি কার্যকরী পদ্ধতি। এটি ডেটা ক্লিনিং, এনরিচমেন্ট, এবং ট্রান্সফরমেশন সহজ করে এবং সার্চ অপারেশনকে আরও কার্যকর করে তোলে। Pipelines ব্যবহার করে বিভিন্ন প্রসেসর যুক্ত করে ডেটার উপর বিভিন্ন ধাপে প্রক্রিয়া চালানো যায়, যা বড় ডেটা সিস্টেমে ডেটা ব্যবস্থাপনা ও বিশ্লেষণের জন্য অত্যন্ত গুরুত্বপূর্ণ।
Ingest Node হলো Elasticsearch-এর একটি বিশেষ ধরনের নোড, যা ডেটা ইনডেক্স করার আগে ডেটাকে প্রিপ্রোসেসিং বা এনরিচমেন্ট করতে ব্যবহৃত হয়। এটি ডেটাকে প্রসেস করে এবং বিভিন্ন পরিবর্তন বা ট্রান্সফরমেশন প্রয়োগ করে, যাতে ডেটা ইন্ডেক্স করার সময় তা সঠিকভাবে প্রস্তুত থাকে। Ingest Node ডেটা ক্লিনিং, ফরম্যাটিং, এনরিচমেন্ট, এবং ডেটা ট্রান্সফরমেশন-এর মতো কার্যক্রম পরিচালনা করে।
Ingest Node-এর প্রধান ভূমিকা হলো ডেটাকে ইন্ডেক্স করার আগে প্রিপ্রোসেসিং করা, যাতে ডেটা ক্লিন এবং সঠিকভাবে ইন্ডেক্স হয়। Ingest Node-এর কিছু গুরুত্বপূর্ণ ভূমিকা নিম্নরূপ:
MM/dd/yyyy
), তাহলে Ingest Node সেই ফিল্ডের তারিখকে yyyy-MM-dd
ফরম্যাটে রূপান্তর করতে পারে।{
"geoip": {
"field": "client_ip",
"target_field": "geoip"
}
}
GeoIP Processor
ব্যবহার করে IP ঠিকানা থেকে ভৌগোলিক তথ্য যোগ করেছে।{
"rename": {
"field": "user_ip",
"target_field": "client_ip"
}
}
"user_ip"
ফিল্ডকে "client_ip"
নামে পরিবর্তন করা হয়েছে।{
"grok": {
"field": "message",
"patterns": ["%{IP:client_ip} - - \\[%{HTTPDATE:timestamp}\\] \"%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:http_version}\" %{NUMBER:status} %{NUMBER:bytes}"]
}
}
{
"drop": {
"if": "ctx.status == 'error'"
}
}
"status"
ফিল্ডে "error"
থাকলে ডকুমেন্টটি ড্রপ করা হচ্ছে।Elasticsearch-এ একটি নোডকে Ingest Node হিসেবে কনফিগার করতে হলে elasticsearch.yml
ফাইলে নিম্নলিখিত সেটিংস ব্যবহার করতে হবে:
node.ingest: true
Ingest Node Elasticsearch-এ ডেটা প্রিপ্রোসেসিং এবং এনরিচমেন্ট করার একটি কার্যকরী উপাদান, যা ডেটাকে সঠিকভাবে ইন্ডেক্স করতে সহায়ক করে। এটি ডেটা ক্লিনিং, ফরম্যাটিং, এবং এনরিচমেন্ট সহজ করে এবং ইনডেক্সিং-এর আগে ডেটার মান পরীক্ষা এবং ভ্যালিডেশন করে। Ingest Node এবং Ingest Pipelines-এর মাধ্যমে Elasticsearch-এ ডেটা প্রসেসিং আরও কার্যকর এবং গতিশীল করা সম্ভব।
Elasticsearch-এ Data Processing Pipelines তৈরি করতে Ingest Pipelines ব্যবহার করা হয়। Ingest Pipelines হলো ডেটা প্রসেসিংয়ের জন্য ব্যবহৃত একটি ফিচার, যা Elasticsearch-এ ডেটা ইনডেক্স করার পূর্বে বিভিন্ন প্রসেসিং স্টেপ বা ট্রান্সফরমেশন প্রয়োগ করে। এটি মূলত ডেটা ক্লিনিং, এনরিচমেন্ট, ফরম্যাটিং, এবং অন্যান্য ট্রান্সফরমেশন করতে সাহায্য করে। Ingest Pipelines তৈরি করা এবং ব্যবহারের মাধ্যমে আপনি ডেটা ইনডেক্স করার আগে সেটি কাস্টমাইজ করতে পারবেন এবং বিভিন্ন প্রসেসিং লজিক প্রয়োগ করতে পারবেন।
Elasticsearch এ Ingest Pipeline হলো একটি স্টেপ-বাই-স্টেপ প্রসেসিং চেইন, যেখানে বিভিন্ন প্রসেসর (processors) ব্যবহার করা হয় ডেটা ট্রান্সফরমেশনের জন্য। প্রতিটি প্রসেসর একটি নির্দিষ্ট অপারেশন করে, যেমন একটি ফিল্ড অ্যাড করা, ফিল্ডের মান পরিবর্তন করা, ডেটা ফরম্যাট করা, ইত্যাদি।
Elasticsearch Node Configuration:
elasticsearch.yml
ফাইলে নিচের লাইনটি চেক করুন:node.ingest: true
Pipeline তৈরি করা:
PUT
রিকোয়েস্ট ব্যবহার করতে পারেন এবং বিভিন্ন প্রসেসর সংজ্ঞায়িত করতে পারেন। নিচে একটি সাধারণ উদাহরণ দেওয়া হলো যেখানে একটি পাইপলাইন তৈরি করা হয়েছে:PUT /_ingest/pipeline/my-pipeline
{
"description": "A simple pipeline for processing log data",
"processors": [
{
"set": {
"field": "ingested_at",
"value": "{{_ingest.timestamp}}"
}
},
{
"rename": {
"field": "message",
"target_field": "log_message"
}
},
{
"lowercase": {
"field": "log_level"
}
}
]
}
ingested_at
নামে একটি নতুন ফিল্ড তৈরি করছে এবং এতে ডেটা ইনজেস্ট করার সময় যোগ করছে।message
ফিল্ডের নাম পরিবর্তন করে log_message
করছে।log_level
ফিল্ডের মানকে ছোট অক্ষরে কনভার্ট করছে।Pipeline ব্যবহার করে ডেটা ইনডেক্স করা:
pipeline
প্যারামিটার ব্যবহার করে নির্দিষ্ট পাইপলাইন উল্লেখ করতে পারেন:POST /my-index/_doc?pipeline=my-pipeline
{
"message": "User logged in successfully",
"log_level": "INFO",
"user_id": 12345
}
my-index
ইনডেক্সে একটি ডকুমেন্ট ইনডেক্স করবে এবং my-pipeline
প্রসেসিং চেইন প্রয়োগ করবে। ডকুমেন্টটি ইনজেস্ট হওয়ার সময় পাইপলাইনের সকল প্রসেসর একের পর এক প্রয়োগ হবে।Ingest Pipeline-এ Elasticsearch বিভিন্ন ধরনের প্রসেসর সাপোর্ট করে। প্রতিটি প্রসেসর নির্দিষ্ট একটি অপারেশন করে। নিচে কিছু সাধারণ প্রসেসর এবং তাদের কাজের উদাহরণ দেওয়া হলো:
set: নতুন ফিল্ড তৈরি করা বা বিদ্যমান ফিল্ডের মান সেট করা।
{
"set": {
"field": "environment",
"value": "production"
}
}
rename: ফিল্ডের নাম পরিবর্তন করা।
{
"rename": {
"field": "original_name",
"target_field": "new_name"
}
}
remove: একটি ফিল্ড রিমুভ করা।
{
"remove": {
"field": "temp_field"
}
}
uppercase/lowercase: একটি ফিল্ডের মানকে বড় বা ছোট অক্ষরে রূপান্তর করা।
{
"uppercase": {
"field": "status"
}
}
grok: একটি ফিল্ডের ডেটা প্যাটার্ন দিয়ে এনালাইজ করে ভ্যালু এক্সট্র্যাক্ট করা (যেমন লগ মেসেজ পার্স করা)।
{
"grok": {
"field": "message",
"patterns": ["%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:log_level} %{GREEDYDATA:message}"]
}
}
Pipeline পুনরায় ব্যবহার: সাধারণ ট্রান্সফরমেশনগুলির জন্য একই Pipeline বারবার ব্যবহার করুন যাতে কোড পুনরায় লেখার প্রয়োজন না হয়।
Pipeline মডুলার রাখা: বিভিন্ন ধরণের ডেটার জন্য আলাদা পাইপলাইন তৈরি করুন, যাতে প্রতিটি পাইপলাইন নির্দিষ্ট কাজের জন্য অ্যাপটিমাইজড থাকে।
Pipeline টেস্ট করা: ডেটা ইনডেক্স করার আগে পাইপলাইন টেস্ট করা উচিত যাতে প্রসেসিংয়ে কোনো ভুল না হয়। Elasticsearch এ _simulate
API ব্যবহার করে পাইপলাইন টেস্ট করা যায়:
POST /_ingest/pipeline/my-pipeline/_simulate
{
"docs": [
{
"_source": {
"message": "User login failed",
"log_level": "ERROR"
}
}
]
}
এনরিচমেন্ট প্রসেসর ব্যবহার: enrich
প্রসেসরের মাধ্যমে ইনডেক্স করা ডেটার উপর ভিত্তি করে নতুন ফিল্ড যোগ করা যায়।
Elasticsearch এ Data Processing Pipelines (Ingest Pipelines) ব্যবহার করে আপনি ডেটাকে ইনডেক্স করার পূর্বে ক্লিন, ট্রান্সফর্ম এবং এনরিচ করতে পারেন। এটি Elasticsearch-এ ডেটা ম্যানেজমেন্ট এবং প্রসেসিংকে অনেক বেশি কার্যকর এবং অ্যাপটিমাইজড করে তোলে। Ingest Pipelines তৈরি এবং ব্যবহারের মাধ্যমে আপনার ডেটা প্রসেসিং চেইনকে আরো ফ্লেক্সিবল এবং কাস্টমাইজড করতে পারবেন।
Elasticsearch-এ Pre-processing এবং Enrichment হলো ডেটা ইন্ডেক্স করার আগে ডেটাকে প্রক্রিয়াজাত করা এবং অতিরিক্ত তথ্য যোগ করার প্রক্রিয়া। Ingest Node এবং Ingest Pipelines ব্যবহার করে Elasticsearch-এ ডেটা ক্লিনিং, ফরম্যাটিং, রূপান্তর এবং এনরিচমেন্ট করা যায়। নিচে Pre-processing এবং Enrichment-এর কয়েকটি বাস্তব উদাহরণ তুলে ধরা হলো:
Pre-processing হলো ডেটা ইন্ডেক্স করার আগে ডেটার গঠন পরিবর্তন করা, অপ্রয়োজনীয় ফিল্ড মুছে ফেলা, বা ফিল্ডের মান সঠিকভাবে সেট করা।
ধরা যাক, লগ ডেটায় "user_ip"
নামে একটি ফিল্ড রয়েছে, যা ইন্ডেক্সে "client_ip"
নামে সংরক্ষণ করতে হবে। Ingest Pipeline-এর মাধ্যমে এটি করা যায়:
PUT /_ingest/pipeline/rename_pipeline
{
"description": "Rename user_ip to client_ip",
"processors": [
{
"rename": {
"field": "user_ip",
"target_field": "client_ip"
}
}
]
}
rename
প্রসেসর ব্যবহার করে "user_ip"
ফিল্ডকে "client_ip"
নামে পরিবর্তন করা হয়েছে।ধরা যাক, আমাদের একটি লগ ডেটা রয়েছে যেখানে "timestamp"
ফিল্ডে তারিখ "MM/dd/yyyy HH:mm:ss"
ফরম্যাটে আছে। আমরা এই তারিখকে "yyyy-MM-dd"
ফরম্যাটে রূপান্তর করতে চাই।
PUT /_ingest/pipeline/date_pipeline
{
"description": "Convert timestamp format",
"processors": [
{
"date": {
"field": "timestamp",
"formats": ["MM/dd/yyyy HH:mm:ss"],
"target_field": "formatted_timestamp",
"output_format": "yyyy-MM-dd"
}
}
]
}
date
প্রসেসর ব্যবহার করে "timestamp"
ফিল্ডের ফরম্যাট পরিবর্তন করা হয়েছে এবং "formatted_timestamp"
নামে একটি নতুন ফিল্ডে সংরক্ষণ করা হয়েছে।কিছু ক্ষেত্রে অপ্রয়োজনীয় ফিল্ড ইন্ডেক্স থেকে মুছে ফেলা জরুরি হতে পারে। ধরা যাক, আমাদের ডকুমেন্টে "temporary_info"
নামে একটি অপ্রয়োজনীয় ফিল্ড আছে, যা ইন্ডেক্সিং-এর সময় মুছে ফেলতে হবে।
PUT /_ingest/pipeline/remove_pipeline
{
"description": "Remove temporary field",
"processors": [
{
"remove": {
"field": "temporary_info"
}
}
]
}
remove
প্রসেসর ব্যবহার করে "temporary_info"
ফিল্ডটি মুছে ফেলা হয়েছে।Enrichment হলো ডেটা ইনডেক্স করার সময় অতিরিক্ত তথ্য যোগ করা। এটি ডেটাকে আরও ইনফরমেটিভ এবং বিশ্লেষণের জন্য উপযুক্ত করে তোলে।
ধরা যাক, আমাদের একটি লগ ডেটা রয়েছে যেখানে "client_ip"
ফিল্ডে ব্যবহারকারীর IP ঠিকানা রয়েছে। আমরা সেই IP ঠিকানার ভিত্তিতে লোকেশন (দেশ, শহর, এবং জিপ কোড) তথ্য যোগ করতে চাই।
PUT /_ingest/pipeline/geoip_enrichment_pipeline
{
"description": "Enrich client IP with GeoIP information",
"processors": [
{
"geoip": {
"field": "client_ip",
"target_field": "geoip"
}
}
]
}
geoip
প্রসেসর ব্যবহার করে "client_ip"
ফিল্ড থেকে লোকেশন তথ্য বের করা হয়েছে এবং "geoip"
নামে একটি ফিল্ডে সংরক্ষণ করা হয়েছে। এতে দেশ, শহর, এবং লোকেশন পয়েন্টের মতো অতিরিক্ত তথ্য অন্তর্ভুক্ত থাকবে।ধরা যাক, ডেটা ইন্ডেক্স করার সময় আমরা প্রতিটি ডকুমেন্টে একটি প্রসেসিং টাইমসট্যাম্প যোগ করতে চাই, যা ডেটা কখন প্রসেস করা হয়েছে তা নির্দেশ করবে।
PUT /_ingest/pipeline/set_pipeline
{
"description": "Set processed_at timestamp",
"processors": [
{
"set": {
"field": "processed_at",
"value": "{{_ingest.timestamp}}"
}
}
]
}
set
প্রসেসর ব্যবহার করে "processed_at"
ফিল্ডে ইনজেস্ট টাইমসট্যাম্প যোগ করা হয়েছে, যা ইন্ডেক্সিং-এর সময় ডেটার প্রসেসিং সময় নির্দেশ করবে।ধরা যাক, আমাদের লগ ডেটায় "message"
নামে একটি ফিল্ড আছে, যা টেক্সট আকারে লগের তথ্য সংরক্ষণ করে। আমরা সেই টেক্সট থেকে IP ঠিকানা, তারিখ, এবং ইভেন্ট টাইপ এক্সট্রাক্ট করতে চাই।
PUT /_ingest/pipeline/grok_pipeline
{
"description": "Extract information from log message",
"processors": [
{
"grok": {
"field": "message",
"patterns": ["%{IP:client_ip} - - \\[%{HTTPDATE:timestamp}\\] \"%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:http_version}\" %{NUMBER:status} %{NUMBER:bytes}"]
}
}
]
}
grok
প্রসেসর ব্যবহার করে "message"
ফিল্ড থেকে বিভিন্ন তথ্য যেমন IP ঠিকানা, লগের সময়সীমা, এবং HTTP মেথড এক্সট্রাক্ট করা হয়েছে এবং ইন্ডেক্সে যোগ করা হয়েছে।Pre-processing এবং Enrichment Elasticsearch-এ ডেটা ইন্ডেক্স করার আগে ডেটাকে প্রিপ্রোসেস এবং এনরিচ করতে ব্যবহৃত হয়। Ingest Node এবং Ingest Pipelines ব্যবহার করে ডেটার গঠন পরিবর্তন করা, অপ্রয়োজনীয় ফিল্ড মুছে ফেলা, এবং অতিরিক্ত তথ্য যোগ করা যায়। এটি ডেটা ইন্ডেক্সিং এবং সার্চ অপারেশনের কার্যকারিতা বাড়াতে সহায়ক, এবং ডেটাকে আরও ইনফরমেটিভ করে তোলে, যা ডেটা অ্যানালাইসিসের জন্য অত্যন্ত গুরুত্বপূর্ণ।
Elasticsearch-এ Ingest Processors হলো সেই উপাদান, যা Ingest Pipelines-এর মাধ্যমে ডেটাকে ইন্ডেক্স করার আগে প্রিপ্রোসেস বা এনরিচ করে। প্রতিটি প্রসেসর একটি নির্দিষ্ট কার্য সম্পাদন করে, যেমন ডেটা ট্রান্সফরমেশন, ফিল্ড পরিবর্তন, ভ্যালিডেশন, বা অতিরিক্ত তথ্য যোগ করা। Elasticsearch-এ অনেক ধরনের Ingest Processor রয়েছে, যা ডেটা ইন্ডেক্স করার আগে বিভিন্ন প্রক্রিয়া প্রয়োগ করতে ব্যবহার করা যায়। নিচে কিছু সাধারণ Ingest Processor এবং তাদের ব্যবহার নিয়ে আলোচনা করা হলো:
Set Processor একটি নির্দিষ্ট ফিল্ডে একটি মান সেট করে। এটি ডেটা প্রসেসিং-এর সময় নতুন ফিল্ড তৈরি করতে বা বিদ্যমান ফিল্ড আপডেট করতে ব্যবহৃত হয়।
সাধারণত ডেটা প্রসেসিং টাইমস্ট্যাম্প, স্ট্যাটিক ভ্যালু, বা কাস্টম মান সেট করতে এটি ব্যবহৃত হয়।
{
"set": {
"field": "processed_at",
"value": "{{_ingest.timestamp}}"
}
}
"processed_at"
ফিল্ডে ইনজেস্ট টাইমসট্যাম্প সেট করা হয়েছে, যা ডকুমেন্ট প্রসেসিং-এর সময় নির্ধারণ করে।Rename Processor একটি ফিল্ডের নাম পরিবর্তন করে। এটি এমন ক্ষেত্রে ব্যবহৃত হয়, যেখানে ডেটার ফিল্ডের নাম পরিবর্তন করতে হয়, যাতে তা আরও বর্ণনামূলক বা সামঞ্জস্যপূর্ণ হয়।
{
"rename": {
"field": "user_ip",
"target_field": "client_ip"
}
}
"user_ip"
ফিল্ডকে "client_ip"
নামে পরিবর্তন করা হয়েছে।Remove Processor একটি নির্দিষ্ট ফিল্ড মুছে ফেলে। এটি অপ্রয়োজনীয় বা সংবেদনশীল ডেটা বাদ দেওয়ার জন্য ব্যবহৃত হয়।
{
"remove": {
"field": "temporary_info"
}
}
"temporary_info"
ফিল্ডটি মুছে ফেলা হয়েছে।Convert Processor একটি ফিল্ডের ডেটা টাইপ পরিবর্তন করে। এটি সাধারণত ডেটার ফরম্যাটিং বা টাইপ পরিবর্তন করতে ব্যবহৃত হয়, যেমন string
থেকে integer
বা boolean
।
{
"convert": {
"field": "age",
"type": "integer",
"ignore_missing": true
}
}
"age"
ফিল্ডের ডেটা টাইপ integer
এ পরিবর্তন করা হয়েছে।Date Processor একটি নির্দিষ্ট ফিল্ডের তারিখের ফরম্যাট নির্ধারণ বা পরিবর্তন করে। এটি বিভিন্ন তারিখ ফরম্যাটকে স্ট্যান্ডার্ড ফরম্যাটে রূপান্তর করতে ব্যবহৃত হয়।
{
"date": {
"field": "log_date",
"formats": ["MM/dd/yyyy HH:mm:ss"],
"target_field": "formatted_date",
"output_format": "yyyy-MM-dd"
}
}
"log_date"
ফিল্ডের তারিখ "yyyy-MM-dd"
ফরম্যাটে রূপান্তর করে "formatted_date"
ফিল্ডে সংরক্ষণ করা হয়েছে।Grok Processor একটি প্যাটার্ন ব্যবহার করে টেক্সট থেকে ডেটা এক্সট্রাক্ট করে। এটি লগ বা টেক্সট ডেটার উপর ভিত্তি করে তথ্য বের করতে এবং আলাদা ফিল্ডে সংরক্ষণ করতে ব্যবহৃত হয়।
{
"grok": {
"field": "message",
"patterns": ["%{IP:client_ip} - - \\[%{HTTPDATE:timestamp}\\] \"%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:http_version}\" %{NUMBER:status} %{NUMBER:bytes}"]
}
}
"message"
ফিল্ড থেকে IP ঠিকানা, তারিখ, এবং HTTP পদ্ধতির মতো তথ্য এক্সট্রাক্ট করা হয়েছে।GeoIP Processor একটি IP ঠিকানা থেকে ভৌগোলিক তথ্য বের করে। এটি IP-এর ভিত্তিতে দেশ, শহর, এবং লোকেশন পয়েন্টের মতো অতিরিক্ত তথ্য যোগ করতে ব্যবহৃত হয়।
{
"geoip": {
"field": "client_ip",
"target_field": "geoip"
}
}
"client_ip"
ফিল্ড থেকে ভৌগোলিক তথ্য বের করে "geoip"
নামে একটি ফিল্ডে সংরক্ষণ করা হয়েছে।Uppercase এবং Lowercase Processor ফিল্ডের মানকে বড় অক্ষর (Uppercase) বা ছোট অক্ষর (Lowercase) এ রূপান্তর করে। এটি স্ট্রিং ডেটাকে নির্দিষ্ট ফরম্যাটে স্টোর করতে ব্যবহৃত হয়।
{
"uppercase": {
"field": "username"
}
}
"username"
ফিল্ডের মানকে বড় অক্ষরে রূপান্তর করা হয়েছে।Script Processor একটি কাস্টম স্ক্রিপ্ট ব্যবহার করে ডেটার উপর কাস্টম প্রসেসিং চালায়। এটি জটিল ট্রান্সফরমেশন বা লজিক প্রয়োগের ক্ষেত্রে ব্যবহৃত হয়।
{
"script": {
"source": "ctx.new_field = ctx.existing_field * 2"
}
}
"existing_field"
এর মানকে দ্বিগুণ করে "new_field"
নামে একটি নতুন ফিল্ডে সংরক্ষণ করা হয়েছে।Pipeline Processor একটি পাইপলাইনের ভেতর আরেকটি পাইপলাইন কল করতে ব্যবহৃত হয়। এটি Nested Pipelines তৈরি করতে এবং জটিল ডেটা প্রসেসিং পরিচালনা করতে সহায়ক।
{
"pipeline": {
"name": "child_pipeline"
}
}